// 导出不同关卡的瓦片地图数据
import { DIRECTION_ENUM, ENTITY_STATE_ENUM, ENTITY_TYPE_ENUM, TILE_TYPE_ENUM } from '../enums'
import level1 from './level1'
import level2 from './level2'
import level3 from './level3'

// 实体类参数
export interface IEntity {
  /** 实体当前的x轴位置 */
  x: number
  /** 实体当前的y轴位置 */
  y: number
  /** 当前实体类型 */
  type: ENTITY_TYPE_ENUM
  /** 朝向 */
  direction: DIRECTION_ENUM
  /** 实体 */
  state: ENTITY_STATE_ENUM
}

export interface ISpikes {
  /** 实体当前的x轴位置 */
  x: number
  /** 实体当前的y轴位置 */
  y: number
  /** 当前实体类型 */
  type: ENTITY_TYPE_ENUM
  /** 地刺数量 */
  count: number
}

// 瓦片接口
export interface ITile {
  src: number | null
  type: TILE_TYPE_ENUM | null
}

// 关卡信息接口
export interface ILevel {
  /** 地图数据 */
  mapInfo: Array<Array<ITile>>
  /** 当前关卡人物初始状态 */
  player: IEntity
  /** 当前关卡敌人初始状态 */
  enemies: IEntity[]
  /** 当前关卡地刺初始状态 */
  spikes: ISpikes[]
  /** 当前关卡陷阱初始状态 */
  bursts: IEntity[]
  /** 当前关卡门初始状态 */
  door: IEntity
}

const levels: Record<string, ILevel> = {
  level1,
  level2,
  level3,
}

export default levels
